package com.natalia.file.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * @Author yang
 **/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("upload")
public class UploadInfo implements Serializable {

    /**
     * 文件的主键
     */
    @TableId
    @TableField("file_id")
    String fileId;

    /**
     * 文件访问路径
     */
    @TableField("file_url")
    String fileUrl;

    /**
     * 文件名称
     */
    @TableField("file_name")
    String fileName;

    /**
     * 文件在服务器的名称
     */
    @TableField("file_source_name")
    String fileSourceName;

    /**
     * 文件分片上传的标识
     */
    @TableField("upload_id")
    String uploadId;

    /**
     * 分片数量
     */
    @TableField("part_num")
    Integer partNum;

    /**
     * 文件的md5值
     */
    @TableField("file_md5")
    String fileMd5;


    /**
     * 文件存储目录
     */
    @TableField("file_path")
    String filePath;

    /**
     * 文件扩展名
     */
    @TableField("file_ext")
    String fileExt;

    /**
     * 存储类型
     */
    @TableField("storage_type")
    Integer storageType;

    /**
     * MIME类型
     */
    @TableField("mime_type")
    String mimeType;

    /**
     * MIME类型
     */
    @TableField("file_status")
    int fileStatus;

    /**
     * 文件大小
     */
    @TableField("file_size")
    Long fileSize;

    /**
     * 创建时间
     */
    @TableField("created_time")
    Date createdTime;

    /**
     * 创建时间
     */
    @TableField("updated_time")
    Date updatedTime;

    /**
     * 路径前缀(如/example)
     */
    @TableField(exist = false)
    String pathPrefix;

    /**
     * 字节内容
     */
    @TableField(exist = false)
    byte[] content;

    /**
     * 桶名称
     */
    @TableField(exist = false)
    String bucketName;

    /**
     * 是否公开访问桶
     */
    @TableField(exist = false)
    boolean bucketPublic = false;

    /**
     * 是否保留后缀名
     */
    @TableField(exist = false)
    boolean keepExt = true;

    /**
     * 是否生成缩略图
     */
    @TableField(exist = false)
    boolean keepThumb = false;

}
